iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
自我挑戰組

30 天程式學習筆記:我的自學成長之路系列 第 16

[DAY 16] 不再害怕套件衝突! 輕鬆建立 Python 虛擬環境

  • 分享至 

  • xImage
  •  

虛擬環境就像專案的獨立空間,讓每個專案擁有獨立的套件環境,從此告別衝突煩惱!

Python 以其簡潔易學的語法、豐富的庫與模組而廣受歡迎,因此成為了初學者和專業開發者的首選語言之一。然而,隨著使用經驗的積累,許多開發者開始面臨一個常見且令人困擾的問題:衝突。這些衝突通常是由不同版本的模組、依賴項或 Python 本身導致的,特別是當你在同一台電腦上運行多個專案時。

Python 看似簡單,為何卻總是遇到衝突?

Python 的簡單性和靈活性在初學時期讓人感到十分順手,但在長期使用中,這些特性卻可能成為問題的根源。以下是一些常見的原因:

  1. 模組版本不兼容:不同的專案可能需要不同版本的模組。例如,A 專案可能需要 TensorFlow 1.x,而 B 專案則依賴於 TensorFlow 2.x。這些不同版本的模組如果安裝在同一環境中,可能會導致相互衝突。
  2. 全域依賴項的覆蓋:在全域環境中安裝的依賴項是共享的,因此當你安裝新模組或更新現有模組時,可能會不小心覆蓋或刪除其他專案所需的版本,導致這些專案無法正常運行。
  3. Python 版本問題:Python 的主要版本之間存在一些不相容的變更。例如,Python 2.x 和 Python 3.x 之間的語法和模組使用方式有很大差異。如果你的專案需要不同的 Python 版本,那麼在全域環境中切換版本可能會變得相當麻煩。

虛擬環境的解決之道

為了避免上述衝突,Python 提供了一個強大的工具——虛擬環境。虛擬環境允許你在同一台電腦上為每個專案創建一個獨立的 Python 環境,這樣你就可以:

  • 隔離專案的依賴項:每個虛擬環境都有自己的獨立模組安裝目錄,不會影響其他專案或全域的 Python 環境。
  • 簡單管理 Python 版本:你可以為每個專案指定不同的 Python 版本,而不必擔心版本切換時影響其他專案。
  • 避免全域環境混亂:虛擬環境中的操作僅限於該環境,減少了因全域依賴項變更引起的問題。

如何創建和使用虛擬環境

創建和使用虛擬環境其實非常簡單。以下是一些基本步驟:

  1. 安裝虛擬環境工具:大多數現代的 Python 版本已經內建了 venv 模組。如果沒有,你可以使用 pip 安裝:

    pip install virtualenv
    
  2. 創建虛擬環境:在你的專案目錄中,運行以下命令來創建虛擬環境:

    # 建立虛擬環境
    virtualenv venv  
    

    這會在專案目錄中創建一個名為venv 的虛擬環境目錄。

    如果想要創建一個指定Python版本的虛擬環境:

    # 創建一個使用 Python 3.8 的虛擬環境
    virtualenv -p python3.8 venv 
    
  3. 啟動虛擬環境
    在 Unix 或 MacOS 系統中,使用以下命令啟動虛擬環境:

    source venv/bin/activate
    

    在 Windows 系統中,使用以下命令:

    venv\Scripts\activate
    

    啟動後,你會在命令提示符前看到虛擬環境的名稱,表示該環境已經生效。

  4. 安裝專案依賴項:現在你可以在虛擬環境中安裝所需的模組。這些模組將會被安裝在虛擬環境的專用目錄中,而不會影響全域環境。
    如果你已經準備好 requirements.txt

    # 安裝相關套件
    pip install -r requirements.txt
    

    或是使用 pip install 直接安裝:

    # 使用 pip install 安裝套件
    pip install torch==2.4.0+cu118 torchvision==0.19.0+cu118 torchaudio==2.4.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
    
  5. 退出虛擬環境:完成工作後,你可以使用以下命令退出虛擬環境,返回全域環境:

    deactivate
    

結語

Python 的易學易用使其成為一門非常受歡迎的程式語言,但在實際開發中,特別是當多個專案共用同一環境時,模組和版本衝突問題經常會讓開發者頭疼不已。透過使用虛擬環境,你可以輕鬆避免這些問題,保持開發環境的乾淨和專案的穩定。每個專案都應該擁有自己的虛擬環境,這樣你才能確保無論在什麼樣的情況下,都不會因為衝突問題而「吃大虧」。


上一篇
[DAY 15] Python 開發者的省時利器: 5 分鐘學會 requirements.txt
下一篇
[DAY 17] 告別龜速訓練! 完整 GPU 設定指南,讓你的深度學習模型飛起來
系列文
30 天程式學習筆記:我的自學成長之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言